package com.aiwiown.snackmq.common.message;

public enum MessageType {
    /**
     * 客户端发送给服务器的生产消息请求
     */
    PRODUCE_REQUEST,

    /**
     * 【新增】删除主题请求
     */
    DELETE_TOPIC_REQUEST,

    /**
     * 客户端发送给服务器的拉取消息请求
     */
    PULL_REQUEST, // <-- 新增

    /**
     * 客户端向服务器提交消费位移
     */
    COMMIT_OFFSET, // <-- 新增

    /**
     * 客户端从服务器获取消费位移
     */
    FETCH_OFFSET, // <-- 新增

    /**
     * 服务器返回给客户端的响应
     */
    RESPONSE,

    /**
     * 客户端或服务器发送的心跳消息
     */
    HEARTBEAT,

    // --- 新增请求类型 ---
    CREATE_TOPIC_REQUEST,

    /**
     * 客户端发送给服务器的声明交换机请求
     */
    DECLARE_EXCHANGE_REQUEST,

    /**
     * 客户端发送给服务器的绑定队列请求
     */
    BIND_QUEUE_REQUEST,

    /**
     * 【新增】客户端发送给服务器的解除绑定请求
     */
    UNBIND_QUEUE_REQUEST,

    /**
     * 【新增】客户端发送给服务器的删除交换机请求
     */
    DELETE_EXCHANGE_REQUEST,

    /**
     * 【新增】获取主题元数据请求
     */
    FETCH_TOPIC_METADATA,

    /**
     * 生产者发送给 Broker 的半消息（预备消息）
     */
    PREPARE_TRANSACTIONAL_MESSAGE,
    /**
     * 生产者发送给 Broker，用于提交事务
     */
    COMMIT_TRANSACTIONAL_MESSAGE,
    /**
     * 生产者发送给 Broker，用于回滚事务
     */
    ROLLBACK_TRANSACTIONAL_MESSAGE,
    /**
     * Broker 发送给生产者，用于回查事务状态
     */
    CHECK_TRANSACTION_STATE,
    /**
     * 生产者客户端向 Broker 注册自身，以便 Broker 进行事务状态回查。
     */
    REGISTER_PRODUCER_REQUEST,
    /**
     * 【新增】客户端认证请求
     */
    AUTHENTICATE_REQUEST,
    /**
     * 获取集群概览信息
     */
    GET_CLUSTER_OVERVIEW_REQUEST,
    /**
     * 获取所有 Topic 列表
     */
    LIST_TOPICS_REQUEST,
    /**
     * 获取所有消费者组列表
     */
    LIST_CONSUMER_GROUPS_REQUEST,

    /**
     * 【新增】获取所有 Broker 节点列表
     */
    LIST_BROKERS_REQUEST,

    /**
     * 获取所有用户列表
     */
    LIST_USERS_REQUEST,
    /**
     * 获取所有角色及其权限
     */
    LIST_ROLES_REQUEST,
    /**
     * 创建一个新用户
     */
    CREATE_USER_REQUEST,
    /**
     * 为一个角色设置权限
     */
    SET_ROLE_PERMISSIONS_REQUEST,
    /**
     * 【新增】删除一个用户
     */
    DELETE_USER_REQUEST,

    /**
     * 【新增】删除一个角色
     */
    DELETE_ROLE_REQUEST,
    /**
     * 【新增】获取所有交换机列表
     */
    LIST_EXCHANGES_REQUEST,

    /**
     * 【新增】诊断分区状态请求
     */
    DIAGNOSE_PARTITION_REQUEST,

    /**
     * 【新增】修复分区损坏段请求
     */
    REPAIR_PARTITION_REQUEST,

    /**
     * 【新增】手动修复分区段结构请求
     */
    MANUAL_REPAIR_PARTITION_REQUEST,

    /**
     * 【新增】一个内部指令，用于在删除 Topic 后清理其在数据状态机中的状态和物理文件
     */
    CLEAN_TOPIC_DATA;
}